using System;
using System.Collections;
using System.ComponentModel;
using System.Drawing;
using PickGold.Charting;
using PickGold.Charting.ChartTypes;

namespace PickGold.Charting.Utilities
{
	internal class CustomPropertyRegistry : IServiceProvider
	{
		internal static int MaxValueOfPixelAttribute = 0x2710;
		internal ArrayList registeredCustomProperties = new ArrayList();

		public CustomPropertyRegistry()
		{
			this.RegisterProperties();
		}

		public void Register(CustomPropertyInfo customPropertyInfo)
		{
			this.registeredCustomProperties.Add(customPropertyInfo);
		}

		private void RegisterProperties()
		{
			SeriesChartType[] appliesToChartType = null;
			CustomPropertyInfo info = null;
			appliesToChartType = new SeriesChartType[] { SeriesChartType.Bar, SeriesChartType.Column, SeriesChartType.RangeColumn, SeriesChartType.BoxPlot, SeriesChartType.RangeBar, SeriesChartType.ErrorBar };
			info = new CustomPropertyInfo("DrawSideBySide", typeof(AxisEnabled), "Auto", SR.DescriptionCustomAttributeDrawSideBySide, appliesToChartType, true, false);
			this.registeredCustomProperties.Add(info);
			SeriesChartType[] typeArray3 = new SeriesChartType[15];
			typeArray3[1] = SeriesChartType.Bubble;
			typeArray3[2] = SeriesChartType.Line;
			typeArray3[3] = SeriesChartType.Spline;
			typeArray3[4] = SeriesChartType.StepLine;
			typeArray3[5] = SeriesChartType.Column;
			typeArray3[6] = SeriesChartType.RangeColumn;
			typeArray3[7] = SeriesChartType.RangeBar;
			typeArray3[8] = SeriesChartType.Radar;
			typeArray3[9] = SeriesChartType.Range;
			typeArray3[10] = SeriesChartType.SplineRange;
			typeArray3[11] = SeriesChartType.Polar;
			typeArray3[12] = SeriesChartType.Area;
			typeArray3[13] = SeriesChartType.SplineArea;
			typeArray3[14] = SeriesChartType.Bar;
			appliesToChartType = typeArray3;
			this.registeredCustomProperties.Add(new CustomPropertyInfo("EmptyPointValue", typeof(EmptyPointTypes), "Average", SR.DescriptionCustomAttributeEmptyPointValue, appliesToChartType, true, false));
			appliesToChartType = new SeriesChartType[] { SeriesChartType.StackedBar, SeriesChartType.StackedBar100, SeriesChartType.RangeBar };
			info = new CustomPropertyInfo("BarLabelStyle", typeof(BarValueLabelDrawingStyle), "Center", SR.DescriptionCustomAttributeBarLabelStyle, appliesToChartType, true, true);
			this.registeredCustomProperties.Add(info);
			appliesToChartType = new SeriesChartType[] { SeriesChartType.StackedBar, SeriesChartType.StackedBar100, SeriesChartType.StackedColumn, SeriesChartType.StackedColumn100 };
			info = new CustomPropertyInfo("StackedGroupName", typeof(string), string.Empty, SR.DescriptionCustomAttributeStackedGroupName, appliesToChartType, true, false);
			this.registeredCustomProperties.Add(info);
			appliesToChartType = new SeriesChartType[] { SeriesChartType.Bar };
			info = new CustomPropertyInfo("BarLabelStyle", typeof(BarValueLabelDrawingStyle), "Outside", SR.DescriptionCustomAttributeBarLabelStyle, appliesToChartType, true, true);
			this.registeredCustomProperties.Add(info);
			appliesToChartType = new SeriesChartType[] { SeriesChartType.Bar, SeriesChartType.Column, SeriesChartType.StackedBar, SeriesChartType.StackedBar100, SeriesChartType.StackedColumn, SeriesChartType.StackedColumn100, SeriesChartType.RangeBar, SeriesChartType.RangeColumn };
			info = new CustomPropertyInfo("DrawingStyle", typeof(BarDrawingStyle), "Default", SR.DescriptionCustomAttributeDrawingStyle, appliesToChartType, true, true);
			this.registeredCustomProperties.Add(info);
			appliesToChartType = new SeriesChartType[] { SeriesChartType.Bar, SeriesChartType.Candlestick, SeriesChartType.Column, SeriesChartType.StackedBar, SeriesChartType.StackedBar100, SeriesChartType.StackedColumn, SeriesChartType.StackedColumn100, SeriesChartType.Stock, SeriesChartType.BoxPlot, SeriesChartType.ErrorBar, SeriesChartType.RangeBar, SeriesChartType.RangeColumn };
			info = new CustomPropertyInfo("PointWidth", typeof(float), 0.8f, SR.DescriptionCustomAttributePointWidth, appliesToChartType, true, false);
			info.MinValue = 0f;
			info.MaxValue = 2f;
			this.registeredCustomProperties.Add(info);
			info = new CustomPropertyInfo("PixelPointWidth", typeof(int), 0, SR.DescriptionCustomAttributePixelPointWidth, appliesToChartType, true, false);
			info.MinValue = 0;
			info.MaxValue = MaxValueOfPixelAttribute;
			this.registeredCustomProperties.Add(info);
			info = new CustomPropertyInfo("MinPixelPointWidth", typeof(int), 0, SR.DescriptionCustomAttributeMinPixelPointWidth, appliesToChartType, true, false);
			info.MinValue = 0;
			info.MaxValue = MaxValueOfPixelAttribute;
			this.registeredCustomProperties.Add(info);
			info = new CustomPropertyInfo("MaxPixelPointWidth", typeof(int), 0, SR.DescriptionCustomAttributeMaxPixelPointWidth, appliesToChartType, true, false);
			info.MinValue = 0;
			info.MaxValue = MaxValueOfPixelAttribute;
			this.registeredCustomProperties.Add(info);
			appliesToChartType = new SeriesChartType[] { SeriesChartType.Candlestick };
			info = new CustomPropertyInfo("PriceUpColor", typeof(Color), "", SR.DescriptionCustomAttributeCandlePriceUpColor, appliesToChartType, true, true);
			this.registeredCustomProperties.Add(info);
			info = new CustomPropertyInfo("PriceDownColor", typeof(Color), "", SR.DescriptionCustomAttributePriceDownColor, appliesToChartType, true, true);
			this.registeredCustomProperties.Add(info);
			appliesToChartType = new SeriesChartType[] { SeriesChartType.Stock, SeriesChartType.Candlestick };
			info = new CustomPropertyInfo("LabelValueType", typeof(StockLabelValueTypes), "Close", SR.DescriptionCustomAttributeLabelValueType, appliesToChartType, true, true);
			this.registeredCustomProperties.Add(info);
			appliesToChartType = new SeriesChartType[] { SeriesChartType.Stock };
			info = new CustomPropertyInfo("OpenCloseStyle", typeof(StockOpenCloseMarkStyle), "Line", SR.DescriptionCustomAttributeOpenCloseStyle, appliesToChartType, true, true);
			this.registeredCustomProperties.Add(info);
			info = new CustomPropertyInfo("ShowOpenClose", typeof(StockShowOpenCloseTypes), "Both", SR.DescriptionCustomAttributeShowOpenClose, appliesToChartType, true, true);
			this.registeredCustomProperties.Add(info);
			appliesToChartType = new SeriesChartType[] { SeriesChartType.Bubble };
			info = new CustomPropertyInfo("BubbleScaleMin", typeof(float), 0f, SR.DescriptionCustomAttributeBubbleScaleMin, appliesToChartType, true, false);
			this.registeredCustomProperties.Add(info);
			info = new CustomPropertyInfo("BubbleScaleMax", typeof(float), 0f, SR.DescriptionCustomAttributeBubbleScaleMax, appliesToChartType, true, false);
			this.registeredCustomProperties.Add(info);
			info = new CustomPropertyInfo("BubbleMaxSize", typeof(float), 15f, SR.DescriptionCustomAttributeBubbleMaxSize, appliesToChartType, true, false);
			info.MinValue = 0f;
			info.MaxValue = 100f;
			this.registeredCustomProperties.Add(info);
			info = new CustomPropertyInfo("BubbleMinSize", typeof(float), 3f, SR.DescriptionCustomAttributeBubbleMaxSize, appliesToChartType, true, false);
			info.MinValue = 0f;
			info.MaxValue = 100f;
			this.registeredCustomProperties.Add(info);
			info = new CustomPropertyInfo("BubbleUseSizeForLabel", typeof(bool), false, SR.DescriptionCustomAttributeBubbleUseSizeForLabel, appliesToChartType, true, false);
			this.registeredCustomProperties.Add(info);
			appliesToChartType = new SeriesChartType[] { SeriesChartType.Pie, SeriesChartType.Doughnut };
			info = new CustomPropertyInfo("PieDrawingStyle", typeof(PieDrawingStyle), "Default", SR.DescriptionCustomAttributePieDrawingStyle, appliesToChartType, true, false);
			info.AppliesTo3D = false;
			this.registeredCustomProperties.Add(info);
			info = new CustomPropertyInfo("CollectedThreshold", typeof(double), 0.0, SR.DescriptionCustomAttributeCollectedThreshold, appliesToChartType, true, false);
			info.MinValue = 0.0;
			info.MaxValue = 1.7976931348623157E+308;
			this.registeredCustomProperties.Add(info);
			info = new CustomPropertyInfo("CollectedThresholdUsePercent", typeof(bool), true, SR.DescriptionCustomAttributeCollectedThresholdUsePercent, appliesToChartType, true, false);
			this.registeredCustomProperties.Add(info);
			info = new CustomPropertyInfo("CollectedSliceExploded", typeof(bool), false, SR.DescriptionCustomAttributeCollectedSliceExploded, appliesToChartType, true, false);
			this.registeredCustomProperties.Add(info);
			info = new CustomPropertyInfo("CollectedLabel", typeof(string), SR.DescriptionCustomAttributeCollectedLabelDefaultText, SR.DescriptionCustomAttributeCollectedLabel, appliesToChartType, true, false);
			this.registeredCustomProperties.Add(info);
			info = new CustomPropertyInfo("CollectedLegendText", typeof(string), SR.DescriptionCustomAttributeCollectedLegendDefaultText, SR.DescriptionCustomAttributeCollectedLegendText, appliesToChartType, true, false);
			this.registeredCustomProperties.Add(info);
			info = new CustomPropertyInfo("CollectedToolTip", typeof(string), string.Empty, SR.DescriptionCustomAttributeCollectedToolTip, appliesToChartType, true, false);
			this.registeredCustomProperties.Add(info);
			info = new CustomPropertyInfo("CollectedColor", typeof(Color), "", SR.DescriptionCustomAttributeCollectedColor, appliesToChartType, true, false);
			this.registeredCustomProperties.Add(info);
			info = new CustomPropertyInfo("PieStartAngle", typeof(int), 0, SR.DescriptionCustomAttributePieStartAngle, appliesToChartType, true, false);
			info.MinValue = 0;
			info.MaxValue = 360;
			this.registeredCustomProperties.Add(info);
			this.registeredCustomProperties.Add(new CustomPropertyInfo("Exploded", typeof(bool), false, SR.DescriptionCustomAttributePieDonutExploded, appliesToChartType, false, true));
			info = new CustomPropertyInfo("LabelsRadialLineSize", typeof(float), 1f, SR.DescriptionCustomAttributeLabelsRadialLineSize, appliesToChartType, true, true);
			info.AppliesTo3D = false;
			info.MinValue = 0f;
			info.MaxValue = 100f;
			this.registeredCustomProperties.Add(info);
			info = new CustomPropertyInfo("LabelsHorizontalLineSize", typeof(float), 1f, SR.DescriptionCustomAttributeLabelsHorizontalLineSize, appliesToChartType, true, true);
			info.AppliesTo3D = false;
			info.MinValue = 0f;
			info.MaxValue = 100f;
			this.registeredCustomProperties.Add(info);
			this.registeredCustomProperties.Add(new CustomPropertyInfo("PieLabelStyle", typeof(PieLabelStyle), "Inside", SR.DescriptionCustomAttributePieLabelStyle, appliesToChartType, true, true));
			info = new CustomPropertyInfo("MinimumRelativePieSize", typeof(float), 30f, SR.DescriptionCustomAttributeMinimumRelativePieSize, appliesToChartType, true, false);
			info.MinValue = 10f;
			info.MaxValue = 70f;
			this.registeredCustomProperties.Add(info);
			info = new CustomPropertyInfo("3DLabelLineSize", typeof(float), 100f, SR.DescriptionCustomAttribute_3DLabelLineSize, appliesToChartType, true, false);
			info.AppliesTo2D = false;
			info.MinValue = 30f;
			info.MaxValue = 200f;
			this.registeredCustomProperties.Add(info);
			info = new CustomPropertyInfo("PieLineColor", typeof(Color), "", SR.DescriptionCustomAttributePieLineColor, appliesToChartType, true, true);
			this.registeredCustomProperties.Add(info);
			info = new CustomPropertyInfo("DoughnutRadius", typeof(float), 60f, SR.DescriptionCustomAttributeDoughnutRadius, new SeriesChartType[] { SeriesChartType.Doughnut }, true, false);
			info.MinValue = 0f;
			info.MaxValue = 99f;
			this.registeredCustomProperties.Add(info);
			SeriesChartType[] typeArray15 = new SeriesChartType[12];
			typeArray15[1] = SeriesChartType.Column;
			typeArray15[2] = SeriesChartType.Bubble;
			typeArray15[3] = SeriesChartType.Line;
			typeArray15[4] = SeriesChartType.Spline;
			typeArray15[5] = SeriesChartType.StepLine;
			typeArray15[6] = SeriesChartType.Area;
			typeArray15[7] = SeriesChartType.SplineArea;
			typeArray15[8] = SeriesChartType.Range;
			typeArray15[9] = SeriesChartType.SplineRange;
			typeArray15[10] = SeriesChartType.Radar;
			typeArray15[11] = SeriesChartType.Polar;
			appliesToChartType = typeArray15;
			this.registeredCustomProperties.Add(new CustomPropertyInfo("LabelStyle", typeof(LabelAlignments), "Auto", SR.DescriptionCustomAttributeLabelStyle, appliesToChartType, true, true));
			appliesToChartType = new SeriesChartType[] { SeriesChartType.Line, SeriesChartType.Spline, SeriesChartType.StepLine, SeriesChartType.Area, SeriesChartType.SplineArea, SeriesChartType.Range, SeriesChartType.SplineRange };
			info = new CustomPropertyInfo("ShowMarkerLines", typeof(bool), false, SR.DescriptionCustomAttributeShowMarkerLines, appliesToChartType, true, true);
			info.AppliesTo2D = false;
			this.registeredCustomProperties.Add(info);
			appliesToChartType = new SeriesChartType[] { SeriesChartType.Spline, SeriesChartType.SplineArea, SeriesChartType.SplineRange };
			info = new CustomPropertyInfo("LineTension", typeof(float), 0.5f, SR.DescriptionCustomAttributeLineTension, appliesToChartType, true, false);
			info.MinValue = 0f;
			info.MaxValue = 2f;
			this.registeredCustomProperties.Add(info);
			SeriesChartType[] typeArray18 = new SeriesChartType[0x1c];
			typeArray18[0] = SeriesChartType.Area;
			typeArray18[1] = SeriesChartType.Bar;
			typeArray18[2] = SeriesChartType.Bubble;
			typeArray18[3] = SeriesChartType.Candlestick;
			typeArray18[4] = SeriesChartType.Column;
			typeArray18[5] = SeriesChartType.Line;
			typeArray18[7] = SeriesChartType.Spline;
			typeArray18[8] = SeriesChartType.SplineArea;
			typeArray18[9] = SeriesChartType.StackedArea;
			typeArray18[10] = SeriesChartType.StackedArea100;
			typeArray18[11] = SeriesChartType.StackedBar;
			typeArray18[12] = SeriesChartType.StackedBar100;
			typeArray18[13] = SeriesChartType.StackedColumn;
			typeArray18[14] = SeriesChartType.StackedColumn100;
			typeArray18[15] = SeriesChartType.StepLine;
			typeArray18[0x10] = SeriesChartType.Stock;
			typeArray18[0x11] = SeriesChartType.ThreeLineBreak;
			typeArray18[0x12] = SeriesChartType.BoxPlot;
			typeArray18[0x13] = SeriesChartType.ErrorBar;
			typeArray18[20] = SeriesChartType.RangeBar;
			typeArray18[0x15] = SeriesChartType.Kagi;
			typeArray18[0x16] = SeriesChartType.PointAndFigure;
			typeArray18[0x17] = SeriesChartType.Range;
			typeArray18[0x18] = SeriesChartType.RangeColumn;
			typeArray18[0x19] = SeriesChartType.Renko;
			typeArray18[0x1a] = SeriesChartType.SplineRange;
			typeArray18[0x1b] = SeriesChartType.FastLine;
			appliesToChartType = typeArray18;
			info = new CustomPropertyInfo("PixelPointDepth", typeof(int), 0, SR.DescriptionCustomAttributePixelPointDepth, appliesToChartType, true, false);
			info.MinValue = 0;
			info.MaxValue = MaxValueOfPixelAttribute;
			info.AppliesTo2D = false;
			this.registeredCustomProperties.Add(info);
			info = new CustomPropertyInfo("PixelPointGapDepth", typeof(int), 0, SR.DescriptionCustomAttributePixelPointGapDepth, appliesToChartType, true, false);
			info.MinValue = 0;
			info.MaxValue = MaxValueOfPixelAttribute;
			info.AppliesTo2D = false;
			this.registeredCustomProperties.Add(info);
			appliesToChartType = new SeriesChartType[] { SeriesChartType.FastLine, SeriesChartType.FastPoint };
			appliesToChartType = new SeriesChartType[] { SeriesChartType.Polar };
			info = new CustomPropertyInfo("AreaDrawingStyle", typeof(CircularAreaDrawingStyles), "Circle", SR.DescriptionCustomAttributePolarAreaDrawingStyle, appliesToChartType, true, false);
			this.registeredCustomProperties.Add(info);
			info = new CustomPropertyInfo("CircularLabelsStyle", typeof(CircularAxisLabelsStyle), "Auto", SR.DescriptionCustomAttributePolarCircularLabelsStyle, appliesToChartType, true, false);
			this.registeredCustomProperties.Add(info);
			info = new CustomPropertyInfo("PolarDrawingStyle", typeof(PolarDrawingStyles), "Line", SR.DescriptionCustomAttributePolarDrawingStyle, appliesToChartType, true, false);
			this.registeredCustomProperties.Add(info);
			appliesToChartType = new SeriesChartType[] { SeriesChartType.Radar };
			info = new CustomPropertyInfo("AreaDrawingStyle", typeof(CircularAreaDrawingStyles), "Circle", SR.DescriptionCustomAttributeRadarAreaDrawingStyle, appliesToChartType, true, false);
			this.registeredCustomProperties.Add(info);
			info = new CustomPropertyInfo("CircularLabelsStyle", typeof(CircularAxisLabelsStyle), "Auto", SR.DescriptionCustomAttributeRadarCircularLabelsStyle, appliesToChartType, true, false);
			this.registeredCustomProperties.Add(info);
			info = new CustomPropertyInfo("RadarDrawingStyle", typeof(RadarDrawingStyle), "Area", SR.DescriptionCustomAttributeRadarDrawingStyle, appliesToChartType, true, false);
			this.registeredCustomProperties.Add(info);
			appliesToChartType = new SeriesChartType[] { SeriesChartType.BoxPlot };
			info = new CustomPropertyInfo("BoxPlotPercentile", typeof(float), 25f, SR.DescriptionCustomAttributeBoxPlotPercentile, appliesToChartType, true, false);
			info.MinValue = 0f;
			info.MaxValue = 1000f;
			this.registeredCustomProperties.Add(info);
			info = new CustomPropertyInfo("BoxPlotWhiskerPercentile", typeof(float), 10f, SR.DescriptionCustomAttributeBoxPlotWhiskerPercentile, appliesToChartType, true, false);
			info.MinValue = 0f;
			info.MaxValue = 1000f;
			this.registeredCustomProperties.Add(info);
			info = new CustomPropertyInfo("BoxPlotShowAverage", typeof(bool), true, SR.DescriptionCustomAttributeBoxPlotShowAverage, appliesToChartType, true, false);
			this.registeredCustomProperties.Add(info);
			info = new CustomPropertyInfo("BoxPlotShowMedian", typeof(bool), true, SR.DescriptionCustomAttributeBoxPlotShowMedian, appliesToChartType, true, false);
			this.registeredCustomProperties.Add(info);
			info = new CustomPropertyInfo("BoxPlotShowUnusualValues", typeof(bool), false, SR.DescriptionCustomAttributeBoxPlotShowUnusualValues, appliesToChartType, true, false);
			this.registeredCustomProperties.Add(info);
			info = new CustomPropertyInfo("BoxPlotSeries", typeof(string), "", SR.DescriptionCustomAttributeBoxPlotSeries, appliesToChartType, true, false);
			this.registeredCustomProperties.Add(info);
			appliesToChartType = new SeriesChartType[] { SeriesChartType.ErrorBar };
			info = new CustomPropertyInfo("ErrorBarStyle", typeof(ErrorBarStyle), "Both", SR.DescriptionCustomAttributeErrorBarStyle, appliesToChartType, true, true);
			this.registeredCustomProperties.Add(info);
			info = new CustomPropertyInfo("ErrorBarCenterMarkerStyle", typeof(ErrorBarMarkerStyles), "Line", SR.DescriptionCustomAttributeErrorBarCenterMarkerStyle, appliesToChartType, true, true);
			this.registeredCustomProperties.Add(info);
			info = new CustomPropertyInfo("ErrorBarSeries", typeof(string), "", SR.DescriptionCustomAttributeErrorBarSeries, appliesToChartType, true, false);
			this.registeredCustomProperties.Add(info);
			info = new CustomPropertyInfo("ErrorBarType", typeof(ErrorBarType), "StandardError", SR.DescriptionCustomAttributeErrorBarType, appliesToChartType, true, false);
			this.registeredCustomProperties.Add(info);
			appliesToChartType = new SeriesChartType[] { SeriesChartType.PointAndFigure };
			info = new CustomPropertyInfo("UsedYValueHigh", typeof(int), 0, SR.DescriptionCustomAttributeUsedYValueHigh, appliesToChartType, true, false);
			info.MinValue = 0;
			info.MaxValue = 20;
			this.registeredCustomProperties.Add(info);
			info = new CustomPropertyInfo("UsedYValueLow", typeof(int), 1, SR.DescriptionCustomAttributeUsedYValueLow, appliesToChartType, true, false);
			info.MinValue = 0;
			info.MaxValue = 20;
			this.registeredCustomProperties.Add(info);
			info = new CustomPropertyInfo("PriceUpColor", typeof(Color), "", SR.DescriptionCustomAttributeBarsPriceUpColor, appliesToChartType, true, false);
			this.registeredCustomProperties.Add(info);
			info = new CustomPropertyInfo("BoxSize", typeof(string), "4%", SR.DescriptionCustomAttributePointFigureBoxSize, appliesToChartType, true, false);
			this.registeredCustomProperties.Add(info);
			info = new CustomPropertyInfo("ProportionalSymbols", typeof(bool), true, SR.DescriptionCustomAttributeProportionalSymbols, appliesToChartType, true, false);
			this.registeredCustomProperties.Add(info);
			info = new CustomPropertyInfo("ReversalAmount", typeof(int), "3", SR.DescriptionCustomAttributeReversalAmount, appliesToChartType, true, false);
			this.registeredCustomProperties.Add(info);
			appliesToChartType = new SeriesChartType[] { SeriesChartType.Kagi };
			info = new CustomPropertyInfo("UsedYValue", typeof(int), 0, SR.DescriptionCustomAttributeUsedYValue, appliesToChartType, true, false);
			info.MinValue = 0;
			info.MaxValue = 20;
			this.registeredCustomProperties.Add(info);
			info = new CustomPropertyInfo("PriceUpColor", typeof(Color), "", SR.DescriptionCustomAttributeBarsPriceUpColor, appliesToChartType, true, false);
			this.registeredCustomProperties.Add(info);
			info = new CustomPropertyInfo("ReversalAmount", typeof(string), "3%", SR.DescriptionCustomAttributeKagiReversalAmount, appliesToChartType, true, false);
			this.registeredCustomProperties.Add(info);
			appliesToChartType = new SeriesChartType[] { SeriesChartType.Renko };
			info = new CustomPropertyInfo("UsedYValue", typeof(int), 0, SR.DescriptionCustomAttributeRenkoUsedYValue, appliesToChartType, true, false);
			info.MinValue = 0;
			info.MaxValue = 20;
			this.registeredCustomProperties.Add(info);
			info = new CustomPropertyInfo("PriceUpColor", typeof(Color), "", SR.DescriptionCustomAttributeBarsPriceUpColor, appliesToChartType, true, false);
			this.registeredCustomProperties.Add(info);
			info = new CustomPropertyInfo("BoxSize", typeof(string), "4%", SR.DescriptionCustomAttributeBoxSize, appliesToChartType, true, false);
			this.registeredCustomProperties.Add(info);
			appliesToChartType = new SeriesChartType[] { SeriesChartType.ThreeLineBreak };
			info = new CustomPropertyInfo("UsedYValue", typeof(int), 0, SR.DescriptionCustomAttributeThreeLineBreakUsedYValue, appliesToChartType, true, false);
			info.MinValue = 0;
			info.MaxValue = 20;
			this.registeredCustomProperties.Add(info);
			info = new CustomPropertyInfo("PriceUpColor", typeof(Color), "", SR.DescriptionCustomAttributeBarsPriceUpColor, appliesToChartType, true, false);
			this.registeredCustomProperties.Add(info);
			info = new CustomPropertyInfo("NumberOfLinesInBreak", typeof(int), 3, SR.DescriptionCustomAttributeNumberOfLinesInBreak, appliesToChartType, true, false);
			this.registeredCustomProperties.Add(info);
			appliesToChartType = new SeriesChartType[] { SeriesChartType.Funnel };
			info = new CustomPropertyInfo("FunnelLabelStyle", typeof(FunnelLabelStyle), "OutsideInColumn", SR.DescriptionCustomAttributeFunnelLabelStyle, appliesToChartType, true, true);
			this.registeredCustomProperties.Add(info);
			info = new CustomPropertyInfo("FunnelNeckWidth", typeof(float), 5f, SR.DescriptionCustomAttributeFunnelNeckWidth, appliesToChartType, true, false);
			info.MinValue = 0f;
			info.MaxValue = 100f;
			this.registeredCustomProperties.Add(info);
			info = new CustomPropertyInfo("FunnelNeckHeight", typeof(float), 5f, SR.DescriptionCustomAttributeFunnelNeckHeight, appliesToChartType, true, false);
			info.MinValue = 0f;
			info.MaxValue = 100f;
			this.registeredCustomProperties.Add(info);
			info = new CustomPropertyInfo("FunnelMinPointHeight", typeof(float), 0f, SR.DescriptionCustomAttributeFunnelMinPointHeight, appliesToChartType, true, false);
			info.MinValue = 0f;
			info.MaxValue = 100f;
			this.registeredCustomProperties.Add(info);
			info = new CustomPropertyInfo("Funnel3DRotationAngle", typeof(float), 5f, SR.DescriptionCustomAttributeFunnel3DRotationAngle, appliesToChartType, true, false);
			info.AppliesTo2D = false;
			info.MinValue = -10f;
			info.MaxValue = 10f;
			this.registeredCustomProperties.Add(info);
			info = new CustomPropertyInfo("FunnelPointGap", typeof(float), 0f, SR.DescriptionCustomAttributeFunnelPointGap, appliesToChartType, true, false);
			info.MinValue = 0f;
			info.MaxValue = 100f;
			this.registeredCustomProperties.Add(info);
			info = new CustomPropertyInfo("Funnel3DDrawingStyle", typeof(Funnel3DDrawingStyle), "CircularBase", SR.DescriptionCustomAttributeFunnel3DDrawingStyle, appliesToChartType, true, false);
			info.AppliesTo2D = false;
			this.registeredCustomProperties.Add(info);
			info = new CustomPropertyInfo("FunnelStyle", typeof(FunnelStyle), "YIsHeight", SR.DescriptionCustomAttributeFunnelStyle, appliesToChartType, true, false);
			this.registeredCustomProperties.Add(info);
			info = new CustomPropertyInfo("FunnelInsideLabelAlignment", typeof(FunnelLabelVerticalAlignment), "Center", SR.DescriptionCustomAttributeFunnelInsideLabelAlignment, appliesToChartType, true, true);
			this.registeredCustomProperties.Add(info);
			info = new CustomPropertyInfo("FunnelOutsideLabelPlacement", typeof(FunnelLabelPlacement), "Right", SR.DescriptionCustomAttributeFunnelOutsideLabelPlacement, appliesToChartType, true, true);
			this.registeredCustomProperties.Add(info);
			info = new CustomPropertyInfo("CalloutLineColor", typeof(Color), "Black", SR.DescriptionCustomAttributeCalloutLineColor, appliesToChartType, true, true);
			this.registeredCustomProperties.Add(info);
			appliesToChartType = new SeriesChartType[] { SeriesChartType.Pyramid };
			info = new CustomPropertyInfo("PyramidLabelStyle", typeof(FunnelLabelStyle), "OutsideInColumn", SR.DescriptionCustomAttributePyramidLabelStyle, appliesToChartType, true, true);
			this.registeredCustomProperties.Add(info);
			info = new CustomPropertyInfo("PyramidMinPointHeight", typeof(float), 0f, SR.DescriptionCustomAttributePyramidMinPointHeight, appliesToChartType, true, false);
			info.MinValue = 0f;
			info.MaxValue = 100f;
			this.registeredCustomProperties.Add(info);
			info = new CustomPropertyInfo("Pyramid3DRotationAngle", typeof(float), 5f, SR.DescriptionCustomAttributePyramid3DRotationAngle, appliesToChartType, true, false);
			info.AppliesTo2D = false;
			info.MinValue = -10f;
			info.MaxValue = 10f;
			this.registeredCustomProperties.Add(info);
			info = new CustomPropertyInfo("PyramidPointGap", typeof(float), 0f, SR.DescriptionCustomAttributePyramidPointGap, appliesToChartType, true, false);
			info.MinValue = 0f;
			info.MaxValue = 100f;
			this.registeredCustomProperties.Add(info);
			info = new CustomPropertyInfo("Pyramid3DDrawingStyle", typeof(Funnel3DDrawingStyle), "SquareBase", SR.DescriptionCustomAttributePyramid3DDrawingStyle, appliesToChartType, true, false);
			info.AppliesTo2D = false;
			this.registeredCustomProperties.Add(info);
			info = new CustomPropertyInfo("PyramidInsideLabelAlignment", typeof(FunnelLabelVerticalAlignment), "Center", SR.DescriptionCustomAttributePyramidInsideLabelAlignment, appliesToChartType, true, true);
			this.registeredCustomProperties.Add(info);
			info = new CustomPropertyInfo("PyramidOutsideLabelPlacement", typeof(FunnelLabelPlacement), "Right", SR.DescriptionCustomAttributePyramidOutsideLabelPlacement, appliesToChartType, true, true);
			this.registeredCustomProperties.Add(info);
			info = new CustomPropertyInfo("CalloutLineColor", typeof(Color), "Black", SR.DescriptionCustomAttributeCalloutLineColor, appliesToChartType, true, true);
			this.registeredCustomProperties.Add(info);
			info = new CustomPropertyInfo("PyramidValueType", typeof(PyramidValueType), "Linear", SR.DescriptionCustomAttributePyramidValueType, appliesToChartType, true, false);
			this.registeredCustomProperties.Add(info);
		}

		[EditorBrowsable(EditorBrowsableState.Never)]
		object IServiceProvider.GetService(Type serviceType)
		{
			if (serviceType != typeof(CustomPropertyRegistry))
			{
				throw new ArgumentException(SR.ExceptionCustomAttributesRegistryUnsupportedType(serviceType.ToString()));
			}
			return this;
		}
	}
}

